package com.xinyue.design.strategy.wayTwo;

/**策略模式的功能是把具体的算法实现，从具体的业务处理里面独立出来，把它们实现成为单独的算法类，从而形成一系列的算法，并让这些算法可以相互替换。
 * 策略模式的重心不是如何来实现算法，而是如何组织、调用这些算法，从而让程序结构更灵活、具有更好的维护性和扩展性。
 * 算法的平等性
 * 策略模式一个很大的特点就是各个策略算法的平等性。各个策略算法地位一样。所以才能实现算法之间可以相互替换。
 * <core>
 * 策略算法是相同行为的不同实现。
 * <core>
 * 策略模式和if-else语句
 * 每个策略算法具体实现的功能，就是原来在if-else结构中的具体实现。
 * 因此多个if-else语句可以考虑使用策略模式。
 */
public interface PriceStrategy {
	
	/*Strategy都是使用的接口来定义的，这也是常见的实现方式。
	 *但是如果多个算法具有公共功能的话，可以把Strategy实现成为抽象类，然后把多个算法的公共功能实现到Strategy里面。
	*/
	/**
	 * 实现方式二：传入具体的数据参数
	 * 优点：实现统一，调用方式统一。理解简单。
	 * 缺点：可扩展性差。如果增加新的参数，则维护难。
	 */
	public double clientPrice(double price);
}
